package eu.dominicum.ft.pd.boundary;

import eu.dominicum.ft.pd.Person;
import eu.dominicum.ft.pd.ProfessionalCyclist;
import eu.dominicum.ft.pd.mao.MakePersonMAO;
import eu.dominicum.ft.pd.mao.MakeProfessionalCyclistMAO;

import java.util.List;

/**
 * Boundary for all general objects.
 *
 * @author Harry Klerks
 * @since 2013M1
 */
public interface GeneralManagement {

    /**
     * Retrieve a list of all {@link ProfessionalCyclist} objects.
     *
     * @return List<ProfessionalCyclist>
     */
    List<ProfessionalCyclist> findAllProfessionalCyclists();

    /**
     * Change the nationality of the given professional cyclist.
     *
     * @param professionalCyclistId -
     * @param newNationalityId      -
     */
    void changeProfessionalCyclistNationality(Long professionalCyclistId, Long newNationalityId);

    /**
     * Make a Person object and persist it.
     *
     * @param makePersonMAO -
     * @return Person
     */
    Person makePerson(MakePersonMAO makePersonMAO);

    /**
     * Retrieve a list of all {@link Person} objects in the store.
     *
     * @return List<Person>
     */
    List<Person> findAllPerson();

    /**
     * Make a {@link ProfessionalCyclist} object and persist it.
     *
     * @param makeProfessionalCyclistMAO -
     * @return ProfessionalCyclist
     */
    ProfessionalCyclist makeProfessionalCyclist(MakeProfessionalCyclistMAO makeProfessionalCyclistMAO);
}
